﻿//  Copyright (c) Microsoft Corporation.  All rights reserved.

namespace Microsoft.VisualStudio.TestTools.WorkItemMigrator
{
    using System;
    using System.Collections.Generic;

    /// <summary>
    /// Represents field of a workitem. 
    /// </summary>
    public interface IWorkItemField
    {
        /// <summary>
        /// Values allowed at tfs for this field
        /// </summary>
        IList<string> AllowedValues { get; }


        /// <summary>
        /// Whether this field has allowed values at TFS
        /// </summary>
        bool HasAllowedValues { get; }


        /// <summary>
        /// Is Value for this field is autogenerated by server?
        /// </summary>
        bool IsAutoGenerated { get; }


        /// <summary>
        /// Is this field mandatory at TFS?
        /// </summary>
        bool IsMandatory { get; }


        /// <summary>
        /// Name of this field at source(Excel/MHT)
        /// </summary>
        string SourceName { get; set; }


        /// <summary>
        /// Help text about this field
        /// </summary>
        string HelpText { get; }


        /// <summary>
        /// Name of Field at TFS
        /// </summary>
        string TfsName { get; }


        /// <summary>
        /// Type of the field.
        /// </summary>
        Type Type { get; }


        /// <summary>
        /// Mapping of Source value to corresponding TFS value
        /// </summary>
        IDictionary<string, string> ValueMapping { get; }


        /// <summary>
        /// Default value of this field at TFS
        /// </summary>
        string DefaultValue { get; }


        /// <summary>
        /// Is this a title field
        /// </summary>
        bool IsTitleField { get; }


        /// <summary>
        /// Is this a html field
        /// </summary>
        bool IsHtmlField { get; }


        /// <summary>
        /// Is this steps field
        /// </summary>
        bool IsStepsField { get; }

        bool IsIdField { get; }

        bool IsAreaPath { get; }

        bool IsIterationPath { get; }
    }
}
